wait return value | WIFEXITED | |
정상 종료 | Child PID | WIFEXITED(statloc)=true 하위 8비트 exit에 넘겨준 인자값 얻는다.(WIXITSTATUS(statloc) |
비정상 종료 | Child PID | WIFEXITED(statloc)=true 비정상 종료 이유 WTERMSIG(statloc) |
wait 함수 오류 | -1 | ECHILD:자식 프로세스가 없는 경우 EINTR: 시스템 콜이 인터럽트 되었을 때 |
celina@ubuntuserver:~/celina/test$ ./wait_test
total 280
drwx------ 3 celina celina 4096 Jul 28 03:38 .
drwx------ 3 celina celina 4096 Jul 23 02:34 ..
-rwxrwxr-x 1 celina celina 16704 Jul 27 03:48 argv_test
-rw-rw-r-- 1 celina celina 206 Jul 27 03:48 argv_test.c
-rwxrwxr-x 1 celina celina 16928 Jul 28 02:58 atexit_test
-rw-rw-r-- 1 celina celina 403 Jul 28 02:58 atexit_test.c
-rwxrwxr-x 1 celina celina 17144 Jul 27 05:18 celina_shell
-rw-rw-r-- 1 celina celina 726 Jul 27 05:17 celina_shell.c
-rwxrwxr-x 1 celina celina 17144 Jul 27 05:20 celina_shell2
-rw-rw-r-- 1 celina celina 727 Jul 27 05:19 celina_shell2.c
-rwx------ 1 celina celina 168 Jul 26 02:55 copy_test.txt
-rwxrwxr-x 1 celina celina 16832 Jul 27 03:54 execl_test
-rw-rw-r-- 1 celina celina 249 Jul 27 03:54 execl_test.c
-rwxrwxr-x 1 celina celina 16832 Jul 27 04:38 execve_test
-rw-rw-r-- 1 celina celina 249 Jul 27 04:38 execve_test.c
-rwxrwxr-x 1 celina celina 16784 Jul 27 03:19 fork_test
-rw-rw-r-- 1 celina celina 322 Jul 27 03:19 fork_test.c
-rwxrwxr-x 1 celina celina 16792 Jul 27 02:58 getpid
-rw-rw-r-- 1 celina celina 144 Jul 27 02:50 getpid.c
drwxrwxr-x 2 celina celina 4096 Jul 26 03:47 link_test
-rw-rw-r-- 1 celina celina 0 Jul 26 03:27 link_test.txt
-rwxrwxr-x 1 celina celina 16464 Jul 23 03:50 loop
-rw-rw-r-- 1 celina celina 74 Jul 23 03:50 loop.c
-rw-rw-r-- 1 celina celina 159 Jul 23 03:54 loop.cpp
-rwxrwxr-x 1 celina celina 17992 Jul 23 03:55 loop2
lrwxrwxrwx 1 celina celina 13 Jul 26 03:26 softlink_test.txt -> link_test.txt
-rwxrwxr-x 1 celina celina 17056 Jul 28 03:38 wait_test
-rw-rw-r-- 1 celina celina 728 Jul 28 03:38 wait_test.c
Parent PID (2670), Child PID (2671)
Child process is normally terminated
waitpid()
wiatpid 함수의 첫 번째 인자 | 의미 |
pid가 -1 일 경우 (pid == -1) | 임의의 자식 프로세스를 기다림 |
pid가 0 보다 클 경우 (pid > 0) | 프로세스 ID가 pid인 자식 프로세스를 기다림 |
pid가 -1 보다 작을 경우 (pid < -1) | 프로세스 그룹 ID가 pid의 절댓값과 같은 자식 프로세스를 기다림 |
pid가 0일 경우 (pid == 0) | waitpid를 호출한 프로세스의 프로세스 그룹 PID와 같은 프로세스 그룹 ID를 가진 프로세스를 기다림 |
세 번째 인자로 사용가능한 상수 | 의미 |
WCONTINUED | 중단 되었다가 재개된 자식 프로세스의 상태를 받음 |
WNOHANG | 기다리는 PID가 종료되지 않아서 즉시 종료 상태를 회수 할 수 없는 상황에서 호출자는 차단되지 않고 반환값으로 0을 받음 |
WUNTRACED | 중단된 자식 프로세스의 상태를 받음 |